package com.sname.car.security;

import com.sname.car.common.constants.Constants;

/**
 * Created By  醉美柳舞之众星捧月
 *
 * @author songx
 * @date 2018/9/24 3:03
 */
public class Teas_All_Sec {

    private static final String PUBLIC_KEY = Constants.PUBLIC_KEY_RSA;
    private static final String Data = "我一直都感觉下雨挺好的，是一件很浪漫的事。";

    public static void main(String[] args) throws Exception {
        System.out.println("需要加密的内容为：   " + Data);
        /** 1: AES 加密 **/
        String AESResultOne = AESUtil.encrypt(Data);
        /** 2: RSA 加密 **/
        byte[] RSAResultOne = RSAUtil.encryptByPublicKey(AESResultOne.getBytes("UTF-8"), PUBLIC_KEY);
        /** 3: 经过网络传输 **/
        System.out.println("第一层加密结果:   " + AESResultOne);
        System.out.println("第二层加密结果:   " + RSAResultOne);
        System.out.println("网络传输中：从客户端传送到服务端----------------------------------split------------------------------------ ==========  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
        /** 4: RSA解密会得到AES加密的密文 **/
        byte[] RSAResultTwo = RSAUtil.decryptByPrivateKey(RSAResultOne);
        /** 5: 得到了上一步的密文,进行AES解密得到最终的明文 **/
        String AESResultTwo = AESUtil.decrypt(new String(RSAResultTwo, "UTF-8"));
        System.out.println("第一层解密结果:   " + RSAResultTwo);
        System.out.println("第二层解密结果:   " + AESResultTwo);
        System.out.println("判断解密的是否与原来的密文一致  :  " + Data.equals(AESResultTwo));
    }
}
